﻿/*
 * SharpDevelop으로 작성되었습니다.
 * 사용자: 2120
 * 날짜: 2012-09-27
 * 시간: 오전 5:17
 * 
 * 이 템플리트를 변경하려면 [도구->옵션->코드 작성->표준 헤더 편집]을 이용하십시오.
 */
using System;
using System.Collections;

namespace PicturePicking.Picking
{
	/// <summary>
	/// Description of PicturePicker.
	/// </summary>
	public class PicturePicker : IPicker
	{
		private PictureManager manager = null;
		/// <summary>
		/// 사진을 클릭하고 이벤트를 보낼수 있는 Picker를 만듭니다.
		/// </summary>
		/// <param name="manager"> Picture Manager의 인스턴스 </param>
		/// <returns> 인터페이스 Pickable를 상속받은 인스턴스 </returns>
		public static PicturePicker Create(PictureManager manager)
		{
			return new PicturePicker(manager);
		}
		
		private PicturePicker(PictureManager manager)
		{
			this.manager = manager;
		}
		
		/// <summary>
		/// 현재 좌표에대해 IPickedable 객체와 충돌하는지 검사합니다.
		/// </summary>
		/// <returns>충돌한 객체가 있다면 해당 IPickedable의 인스턴스가 봔환됨. 그 외 null 값 반환 </returns>
		public IPickedable Pick(int x,int y)
		{
			ArrayList list = manager.GetPickList;
			
			lock(list){
				foreach(IPickedable obj in list)
				{
					if(obj.Collide(x,y) == true){
						return obj;
					}
				}
			}
			return null;
		}
	}
}
